<template>
    <section>
        <b-field>
            <b-button
                label="Clear selected"
                type="is-danger"
                icon-left="close"
                :disabled="!selected"
                @click="selected = null"
            />
        </b-field>

        <b-tabs>
            <b-tab-item label="Table">
                <b-table
                    :data="data"
                    :columns="columns"
                    v-model:selected="selected"
                    focusable
                >
                </b-table>
            </b-tab-item>

            <b-tab-item label="Selected">
                <pre>{{ selected }}</pre>
            </b-tab-item>
        </b-tabs>
    </section>
</template>

<script lang="ts">
import { defineComponent } from "vue";
import { BButton, BField, BTable, BTabs, BTabItem } from "buefy";

export default defineComponent({
    components: {
        BButton,
        BField,
        BTable,
        BTabs,
        BTabItem,
    },
    data() {
        const data = [
            {
                id: 1,
                first_name: "Jesse",
                last_name: "Simmons",
                date: "2016-10-15 13:43:27",
                gender: "Male",
            },
            {
                id: 2,
                first_name: "John",
                last_name: "Jacobs",
                date: "2016-12-15 06:00:53",
                gender: "Male",
            },
            {
                id: 3,
                first_name: "Tina",
                last_name: "Gilbert",
                date: "2016-04-26 06:26:28",
                gender: "Female",
            },
            {
                id: 4,
                first_name: "Clarence",
                last_name: "Flores",
                date: "2016-04-10 10:28:46",
                gender: "Male",
            },
            {
                id: 5,
                first_name: "Anne",
                last_name: "Lee",
                date: "2016-12-06 14:38:38",
                gender: "Female",
            },
        ];

        return {
            data,
            selected: data[1] as (typeof data)[number] | null,
            columns: [
                {
                    field: "id",
                    label: "ID",
                    width: "40",
                    numeric: true,
                },
                {
                    field: "first_name",
                    label: "First Name",
                },
                {
                    field: "last_name",
                    label: "Last Name",
                },
                {
                    field: "date",
                    label: "Date",
                    centered: true,
                },
                {
                    field: "gender",
                    label: "Gender",
                },
            ],
        };
    },
});
</script>
